home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO018.dsk / FATHOM.bas < prev    next >
BASIC Source File  |  2012-02-16  |  7KB  |  171 lines

  1. 100  REM  FATHOM BY JIM HILGER.  HIT SUBS WITH DEPTHCHARGES.
  2. 110 I = J = SS = D = T = S = OO = FI = M = SK = TM = FT:F = 127:S1 = 49249:SP = 49200
  3. 120  DIM XDC(5),YDC(5),XT(5),YT(5),XS(5),YS(5): GOTO 150
  4. 130  POKE 776,Q: POKE 777,E: CALL 778: REM  MAKE A NOISE
  5. 140  IF FI = 0  AND D <5  AND  PEEK(S1) >F  THEN FI = 1:Z =  PEEK(SP) + PEEK(SP) + PEEK(SP)
  6. 145  RETURN 
  7. 150  GOSUB 1230: REM  INITIALIZE
  8. 160 D = 0:S = 0:T = 0:OO = 0
  9. 170  FOR I = 1 TO 5:YS(I) = 60: NEXT 
  10. 180  FOR I = 80 TO 140  STEP 20
  11. 190 J = 1 +5 * RND(1): IF YS(J) >60 GOTO 190
  12. 200 YS(J) = I: NEXT 
  13. 210  REM <CTRL-J>MAIN LOOP OF PROGRAM:<CTRL-J>
  14. 220  GOSUB 140: REM  TEST SW 1
  15. 230 P =  PDL(0): REM  MOVE SHIP?
  16. 240  REM  MOVE SHIP LEFT
  17. 250  IF P >85  OR SS <15 GOTO 280
  18. 260  HCOLOR= 0: DRAW 1 AT SS,20:SS = SS -6: HCOLOR= 3: DRAW 1 AT SS,20
  19. 270  GOTO 310
  20. 280  REM  MOVE SHIP RIGHT
  21. 290  IF P <170  OR SS >235 GOTO 310
  22. 300  HCOLOR= 0: DRAW 1 AT SS,20:SS = SS +6: HCOLOR= 3: DRAW 1 AT SS,20
  23. 310  REM  SHIP FIRE?
  24. 320  IF D >4  THEN FI = 0: GOTO 410
  25. 330  GOSUB 140: IF   NOT FI GOTO 400
  26. 340  HCOLOR= 3: DRAW 5 AT SS +15,30
  27. 350 D = D +1
  28. 360  FOR I = 1 TO 5
  29. 370  IF XDC(I) = 0  THEN M = I:I = 5
  30. 380  NEXT :FI = 0
  31. 390 XDC(M) = SS +15:YDC(M) = 30
  32. 400  REM  MOVE SUBS
  33. 410  GOSUB 140: IF   NOT S GOTO 500
  34. 420  FOR I = 1 TO 5
  35. 430  IF XS(I) = 0  THEN 490
  36. 440  HCOLOR= 0:SH = 2.5 -.5 *DS(I): DRAW SH AT XS(I),YS(I)
  37. 450 XS(I) = XS(I) +DS(I) *5
  38. 460  IF XS(I) <15  THEN DS(I) =  -1 *DS(I):XS(I) = 15
  39. 470  IF XS(I) >250  THEN DS(I) =  -1 *DS(I):XS(I) = 250
  40. 480  HCOLOR= 6:SH = 2.5 -.5 *DS(I): DRAW SH AT XS(I),YS(I)
  41. 490  NEXT I
  42. 500  REM  MOVE WEAPONRY
  43. 510  GOSUB 140: IF D = 0 GOTO 610
  44. 530  FOR I = 1 TO 5
  45. 540  IF XDC(I) = 0  THEN 600
  46. 550  HCOLOR= 0: DRAW 5 AT XDC(I),YDC(I)
  47. 560 YDC(I) = YDC(I) +10
  48. 570  HCOLOR= 3: DRAW 5 AT XDC(I),YDC(I)
  49. 580  IF YDC(I) <141  THEN 600
  50. 590  HCOLOR= 0: DRAW 5 AT XDC(I),YDC(I):XDC(I) = 0:D = D -1
  51. 600  NEXT I
  52. 610  IF T = 0  THEN 660
  53. 620  FOR I = 1 TO 5
  54. 630  IF XT(I) = 0  THEN 650
  55. 640  HCOLOR= 0: DRAW 6 AT XT(I),YT(I):YT(I) = YT(I) -10: HCOLOR= 3: DRAW 6 AT XT(I),YT(I)
  56. 650  NEXT I
  57. 660  REM  SHIP HIT?
  58. 670  FOR I = 1 TO 5
  59. 680  IF XT(I) = 0  THEN 770
  60. 690  IF YT(I) >30  THEN 770
  61. 700  IF  ABS(SS -XT(I) +13) >14  THEN 740
  62. 710 HT = XT(I)
  63. 720  HCOLOR= 5: DRAW 4 AT HT,21::Q = 200:E = 100: GOSUB 130: DRAW 4 AT HT,16: GOSUB 130: DRAW 4 AT HT -5,12: GOSUB 130: DRAW 4 AT HT +2,9
  64. 730 OO = 1:I = 5: GOTO 770
  65. 740  HCOLOR= 0: DRAW 6 AT XT(I),YT(I):T = T -1
  66. 750  HCOLOR= 6: DRAW 4 AT XT(I),19: FOR BB = 1 TO 100: NEXT BB
  67. 760  HCOLOR= 0: DRAW 4 AT XT(I),19:XT(I) = 0
  68. 770  NEXT I
  69. 780  IF OO  THEN  VTAB 21: PRINT " YOUR SHIP WAS DESTROYED. TRY AGAIN?";: GOTO 1560
  70. 790  REM  SUB HIT?
  71. 800  IF D = 0  OR S = 0  THEN 940
  72. 810  FOR I = 1 TO 5
  73. 820  IF XS(I) = 0  THEN 930
  74. 830  FOR J = 1 TO 5
  75. 840  IF XDC(J) = 0  THEN 920
  76. 850  IF YS(I) < >YDC(J)  THEN 920
  77. 860  IF  ABS(XDC(J) -XS(I) -9) >10  THEN 920
  78. 870  HCOLOR= 5:SH = 2.5 -.5 *DS(I): DRAW SH AT XS(I),YS(I)
  79. 880 SC = SC +1: VTAB 23: HTAB 25: PRINT "SUB HITS: ";SC
  80. 890 Q = 250:E = 50: GOSUB 130
  81. 900  HCOLOR= 0: DRAW 5 AT XDC(J),YDC(J):XDC(J) = 0:D = D -1
  82. 910  DRAW SH AT XS(I),YS(I):XS(I) = 0:S = S -1
  83. 920  NEXT J
  84. 930  NEXT I
  85. 940  REM  SUB FIRE?
  86. 950  IF S = 0  THEN 1050
  87. 960  FOR I = 1 TO 5
  88. 970  IF XS(I) = 0  THEN 1040
  89. 980  IF XT(I) >0  THEN 1040
  90. 990  IF  ABS(SS -XS(I)) >15 +YS(I)/5  THEN 1040
  91. 1000  IF  RND(1) >.8  THEN 1040
  92. 1010 XT(I) = XS(I) +10:YT(I) = YS(I) -10
  93. 1020  HCOLOR= 3: DRAW 6 AT XT(I),YT(I)
  94. 1030 T = T +1
  95. 1040  NEXT I
  96. 1050  REM  SUB APPEAR?
  97. 1060  IF S >4  THEN 1170
  98. 1070 R =  RND(1): IF R >.3  AND R <SK  THEN 1100
  99. 1080  IF S = 0  THEN 1100
  100. 1090  GOTO 1170
  101. 1100  FOR I = 1 TO 5: IF XS(I) = 0  THEN M = I:I = 5
  102. 1110  NEXT I
  103. 1120 S = S +1:DS(M) =  -1 ^( RND(1) <.5)
  104. 1130  IF DS(M) =  -1  THEN XS(M) = 250
  105. 1140  IF DS(M) = 1  THEN XS(M) = 15
  106. 1150  HCOLOR= 6:SH = 2.5 -.5 *DS(M): DRAW SH AT XS(M),YS(M)
  107. 1160  GOTO 1170
  108. 1170  REM  SONAR BLIP
  109. 1180 Q = 150:E = 10: GOSUB 130
  110. 1190 Q = 120:E = 10: GOSUB 130
  111. 1200 TM = TM +1: VTAB 23: HTAB 3: PRINT "TIME :";TM
  112. 1210  IF TM = 200  THEN 1550
  113. 1220  GOTO 220
  114. 1230  REM SET UP SHAPE TBL @ 7700
  115. 1240  ON  PEEK(8191) = 165 GOTO 1300: POKE 8191,165
  116. 1250  FOR I = 7700 TO 8155: READ X: POKE I,X: NEXT 
  117. 1260  POKE 232,20: POKE 233,30
  118. 1270  REM POKE SOUND-ROUTINE
  119. 1280  POKE 776,255: POKE 777,255: POKE 778,173: POKE 779,48: POKE 780,192: POKE 781,136: POKE 782,208: POKE 783,5: POKE 784,206: POKE 785,9: POKE 786,3: POKE 787,240
  120. 1290  POKE 788,9: POKE 789,202: POKE 790,208: POKE 791,245: POKE 792,174: POKE 793,8: POKE 794,3: POKE 795,76: POKE 796,10: POKE 797,3: POKE 798,96
  121. 1300  PRINT  CHR$(21): TEXT : HOME : NORMAL : SPEED= 255
  122. 1310  PRINT "F A T H O M   -- ANTI-SUBMARINE WARFARE!----------------------------------------"
  123. 1320  PRINT  TAB( 13)"BY JIM HILGER"
  124. 1330  VTAB 8: PRINT "STEER YOUR SHIP WITH PADDLE ZERO."
  125. 1340  PRINT : PRINT "PRESS BUTTON TO DROP A DEPTHCHARGE."
  126. 1350  PRINT : PRINT "WATCH OUT FOR TORPEDOES!"
  127. 1360  VTAB 18: PRINT "TURN PADDLE 0 TO SET THE SKILL LEVEL,   (1=EASY ... 8=LETHAL)."
  128. 1370  VTAB 24: PRINT "PRESS & RELEASE BUTTON TO BEGIN.";
  129. 1380 SK =  INT( PDL(0)/32 +1): VTAB 21: HTAB 1: PRINT "SKILL LEVEL = "SK"."
  130. 1390  IF  PEEK(S1) =  <F GOTO 1380
  131. 1400  IF  PEEK(S1) >F GOTO 1400
  132. 1410 LE = SK
  133. 1420  IF SK <1  OR SK >8  THEN 1360
  134. 1430 SK = .31 +.01 *(1.7 ^(SK -1))
  135. 1440  HOME : HGR 
  136. 1450  ROT= 0: SCALE= 1
  137. 1460  HCOLOR= 6: HPLOT 0,29 TO 279,29
  138. 1470  HCOLOR= 3
  139. 1480  DRAW 1 AT 130,20
  140. 1490 SS = 130
  141. 1500 SC = 0:TM = 0
  142. 1510  VTAB 21: HTAB 3: PRINT "PRESS BUTTON TO DROP DEPTHCHARGE."
  143. 1520  VTAB 23: HTAB 14: PRINT "LEVEL ";LE
  144. 1530  VTAB 23: HTAB 25: PRINT "SUB HITS: ";SC
  145. 1540  RETURN 
  146. 1550  VTAB 21: PRINT " YOU WIN! DO YOU WANT TO TRY AGAIN? ";
  147. 1560  POKE 49168,0: GET K$: IF K$ = "Y"  OR K$ = "y"  THEN  RUN 
  148. 1570  TEXT : HOME : PRINT  CHR$(4)"-STARTUP"
  149. 1580  DATA 6,0,14,0,165,0,11,1,112,1,163,1,182,1,9,9,9,9,41,9
  150. 1590  DATA 9,9,9,41,9,9,9,9,17,27,27,27,27,27,31,59,31,63,27,31
  151. 1600  DATA 27,27,27,19,9,9,9,9,41,9,45,41,13,41,9,9,9,9,17,59 
  152. 1610  DATA 27,27,27,27,31,63,63,63,31,31,27,27,27,19,41,45,13,41,45,45 
  153. 1620  DATA 45,45,45,45,45,9,9,41,17,27,59,27,27,59,63,63,63,63,63,63
  154. 1630  DATA 27,27,31,19,45,45,45,45,45,45,45,45,45,45,45,45,45,45,53,27
  155. 1640  DATA 63,63,63,63,63,63,63,63,63,63,63,63,63,23,9,45,45,45,45,45 
  156. 1650  DATA 45,45,45,45,45,45,45,9,17,27,27,27,27,27,27,27,27,27,27,27 
  157. 1660  DATA 27,27,27,19,0,9,9,9,9,9,45,9,9,9,17,27,27,27,27,59
  158. 1670  DATA 27,27,27,27,19,9,9,9,9,9,13,9,9,9,17,27,27,27,59,63
  159. 1680  DATA 63,27,27,27,19,9,9,9,9,45,45,13,9,9,17,27,27,27,63,63
  160. 1690  DATA 63,31,27,27,19,45,45,45,45,45,45,45,45,45,53,59,63,63,63,63 
  161. 1700  DATA 63,63,63,27,55,9,9,41,45,45,45,45,45,13,17,27,27,27,27,27 
  162. 1710  DATA 27,27,27,27,19,0,9,9,9,41,13,9,9,9,9,17,27,27,27,27 
  163. 1720  DATA 27,59,27,27,27,19,9,9,9,9,13,9,9,9,9,17,27,27,27,27
  164. 1730  DATA 59,63,63,27,27,19,9,9,9,45,45,13,9,9,9,17,27,27,27,27
  165. 1740  DATA 63,63,63,31,27,19,45,45,45,45,45,45,45,45,45,53,63,27,63,63
  166. 1750  DATA 63,63,63,63,63,23,9,41,45,45,45,45,45,13,9,17,27,27,27,27
  167. 1760  DATA 27,27,27,27,27,19,0,41,9,9,9,17,27,31,27,27,19,9,13,9 
  168. 1770  DATA 9,17,27,59,27,59,19,13,41,9,13,49,59,27,31,31,23,9,13,45
  169. 1780  DATA 41,17,27,63,27,63,19,9,41,45,13,17,27,27,63,27,19,0,9,13
  170. 1790  DATA 26,59,19,9,13,26,63,23,45,45,62,63,55,45,45,6,0,9,13,26
  171. 1800  DATA 63,23,45,45,62,63,55,9,13,26,63,23,45,41,6,0